Hace unos dias descubrí por casualidad Fossil-SCM. Fossil-SCM es, principalmente, un sistema de control de versiones distribuido. Un sistema de control de versiones (SCV) es un programa que sirve, como indica su nombre, para gestionar las diferentes versiones de los ficheros que forman parte de un proyecto. Estos sistemas se suelen utilizar para gestionar el código fuente que da lugar a una aplicación, pero pueden utilizarse para controlar las versiones de cualquier tipo de documentos.
Uno de los sistemas de control de versiones más usados del momento es Git, en parte por el empujón que ha supuesto gitHub.
Sin embargo, lo que me llamó la atención de Fossil-SCM (a partir de ahora, Fossil a secas) es que, además de un SCV, proporciona otras herramientas muy útiles por sí mismas, como:
- un wiki
- una herramienta de control de tickets (incidencias/errores)
- un entorno de administración web
Toda esta funcionalidad está contenida en un ejecutable de ¡poco más de 1.2MB! Si todavia recuerdas lo que era un diskette, ¡Fossil sería capaz de funcionar desde uno de aquellos discos!
Fossil como Sistema de Control de Versiones (SCV)
Uso Git desde hace poco tiempo, en proyectos personales y me he acostumbrado a sus comandos, a su forma de funcionar, etc... Aunque pensaba que sería complicado cambiar el chip y pensar en términos de Fossil, la verdad es que la transición de uno a otro es muy sencilla: en general, Git y Fossil comparten los comandos habituales: add, status, commit, etc. La principal diferencia es que en Fossil no hay que volver a añadir al index los ficheros modificados, sino que podemos hacer un commit directamente. Esta fase intermedia -index- entre el workspace y el repositorio local -por lo que sé- es exclusiva de Git, así que no es extraño que Fossil actúe de manera diferente.Si sólo vas a utilizar un SCV, te recomendaría que aprendas a utilizar Git. Al fin y al cabo, se ha convertido en casi un estandard en lo que a SCV se refiere y te será útil de forma más general.
Usar Fossil de forma exclusiva como SCV también tiene sus ventajas: no necesita instalación, ejecutable muy ligero (1.2MB), multiplataforma, etc...
Fossil no necesita instalación, por lo que puedes utilizarlo incluso en cuentas de usuario limitadas. Por supuesto, es multiplataforma, de manera que no importa si utilizas Windows, Mac o Linux... (o si cambias frecuentemente de uno a otro).
Con poco más de 1.2MB, puedes llevar Fossil en cualquier pincho USB, por pequeño que sea, almacenarlo en Dropbox o en cualquier otro sistema de almacenamiento online, enviarlo como adjunto por email, etc...
Para contrastar, el paquete de descarga de Git son 14.5MB (la versión portable 19.5MB). Y además de SCV, Fossil incluye un wiki y un sistema de ticketing en sólo 1.2MB (menos de una décima parte de Git).
En cuanto al formato del almacén de las versiones de Fossil, utiliza SQLite. En un único fichero se guardan tres bases de datos: la de control de versiones, la de ficheros del wiki y la de base de datos de tickets (si existen). En el caso concreto de utilizar Fossil como SCV, el uso de SQLite no presenta ninguna ventaja especial, excepto quizás, la compresión de los archivos y el ahorro de espacio en disco. Pero cuando tenemos en cuenta las funcionalidades extra de Fossil, creo que el uso de SQLite es un acierto.
Donde Fossil destaca es en conjunción con las otras herramientas que incorpora: el sistema de tickets y el wiki.
Fossil como entorno completo de apoyo al desarrollo colaborativo
En el proceso de desarrollo, además de contar con un sistema de control de versiones (SCV), también es muy útil contar con un wiki (para documentación) y un sistema de ticketing en el que poder sugerir nuevas funcionalidades, comunicar incidencias, gestionar la atención al cliente, hacer seguimiento de errores, etc...En este sentido más global, Fossil puede compararse con Trac, aunque de nuevo vence en la simplicidad de puesta en marcha y configuración, al estar todo autocontenido en un sólo ejecutable sin dependencias externas.
Dado que el público objetivo de Fossil sea un equipo con un perfil técnico -al menos en principio-, Fossil proporciona en forma de pack las herramientas básicas implicadas en el desarrollo colaborativo habitual de software.
Un escenario habitual sería el de un grupo de desarrolladores que trabajan en el código de un nuevo programa. Mediante el SCV gestionan las diferentes versiones del código de forma descentralizada. El cliente y los usuarios informan de errores y sugieren mejoras utilizando el sistema de gestión de errores. En el wiki, los desarrolladores publican información relativa al uso de su programa, respuestas a las preguntas más frecuentes (FAQ, en inglés) o documentación privada relativa al desarrollo interno (accesible únicamente a los miembros del equipo de desarrollo).
Como referencia, puedes ver el listado completo de los errores y mejoras propuestos para Fossil en su web. El proyecto Fossil utiliza la opción de documentación incrustada (de la que hablo después), por lo que su wiki tiene relativamente pocas entradas.
Como quiero desvincular la relación de los SCV del desarrollo de software, imagina el siguiente escenario.
Un ejemplo de uso: realizar un trabajo en grupo en colegio o la universidad
Resumen
Hasta aquí esta primera entrada sobre Fossil-SCM en la que he repasado las diferentes herramientas sobre este gestor de control de versiones que además incorpora un wiki y un sistema de control de errores o incidentes.En las siguientes entradas de la serie me centraré en el uso de Fossil como gestor de documentación, explorando las posibilidades de la documentación incrustada (embedded documentation) y en el uso del wiki.
Comentarios